Mobilemapi.dll

Otázka od: Roman

4. 10. 2004 8:56

Ahoj,
pokousim se zakomponovat mobilamapi.dll (z mobilem.cz) do aplikace a
neustale narazim na access violation:

uses mobilemapi_struct;

function info(login, pwd:PChar; Var errMsg:PChar;
              Var Res:Tmobilemapi_info):Integer; external 'mobilemapi.dll';

const testlogin=''; //testovaci dle dokumentace k API
         testpwd='';

procedure TForm1.Button1Click(Sender: TObject);
var err:PChar;
    res:TMobilemapi_Info;
begin
  Info(PChar(testlogin),PChar(testpwd),err,res);
end;

Poradi nekdo?

Diky,
Roman


Odpovedá: Jiri Cincura

4. 10. 2004 9:03

Roman wrote:
> Ahoj,
> pokousim se zakomponovat mobilamapi.dll (z mobilem.cz) do aplikace a
> neustale narazim na access violation:

A nejni tam nejake volaci konvence stdcall; apod?

--
Jiri Cincura
e-mail: mailto:jiri@cincura.net; mailto:xcincura@informatics.muni.cz
ICQ: 314711544
web: http://www.cincura.net; http://photo.cincura.net
---
Nekdo vidi veci, ktere existuji, a pta se - proc?. Ja snim o vecech, ktere
nikdy neexistovaly a ptam se - proc ne? (Robert Kennedy)



Odpovedá: Petr Brant

4. 10. 2004 9:36

No jasne, nemas alokovanou pamet pro err. Musis napsat napr.
var err: array[0..255] of char namisto err: PChar a pak uz by to mohlo
fungovat.

RNDr. Petr Brant [brant@dcomm.cz]
http://brant.wz.cz <http://brant.wz.cz>


> pokousim se zakomponovat mobilamapi.dll (z mobilem.cz) do aplikace a
> neustale narazim na access violation:
>
> uses mobilemapi_struct;
>
> function info(login, pwd:PChar; Var errMsg:PChar;
> Var Res:Tmobilemapi_info):Integer; external
> 'mobilemapi.dll';
>
> const testlogin=''; //testovaci dle dokumentace k API
> testpwd='';
>
> procedure TForm1.Button1Click(Sender: TObject);
> var err:PChar;
> res:TMobilemapi_Info;
> begin
> Info(PChar(testlogin),PChar(testpwd),err,res);
> end;


Odpovedá: Tomas Rosa

4. 10. 2004 9:18


>pokousim se zakomponovat mobilamapi.dll (z mobilem.cz) do aplikace a
>neustale narazim na access violation:
>
>uses mobilemapi_struct;
>
>function info(login, pwd:PChar; Var errMsg:PChar;
> Var Res:Tmobilemapi_info):Integer; external 'mobilemapi.dll';

Spravna deklarace (ze souboru mobilem_unit.pas ktery je prilozen k DLL) je:

// Vyzadani informaci o uzivateli
Function info(login, pwd : PChar; Var errMsg : PChar;
               Var Res : Tmobilemapi_info) : Integer; stdcall;

tedy chybi tam STDCALL


>const testlogin=''; //testovaci dle dokumentace k API
> testpwd='';
>
>procedure TForm1.Button1Click(Sender: TObject);
>var err:PChar;
> res:TMobilemapi_Info;
>begin
> Info(PChar(testlogin),PChar(testpwd),err,res);

Po zavolani fce a zpracovani vysledku je nutne uvolnit pamet:

dllmem_free(res, err);


>end;


                                        S pozdravem
                                                Tomas Rosa

------------------------------=[ dcci.cz ]=--------------------------------
Tomas Rosa DCCI s.r.o.
+420 602 860 704 Tomas.Rosa@dccimobile.com
+420 777 777 269
                                                        http://www.m-game.cz
* mobilni marketing, komunikace a sluzby http://sms.mobilem.cz
---------------------------------------------------------------------------


Odpovedá: Roman

4. 10. 2004 9:26

Aha, no jo, pondeli... u external chybelo stdcall;
Diky!

> Roman wrote:
>> Ahoj,
>> pokousim se zakomponovat mobilamapi.dll (z mobilem.cz) do aplikace a
>> neustale narazim na access violation:
>
> A nejni tam nejake volaci konvence stdcall; apod?